package task_process

import (
	"context"
	"errors"
	"fmt"
	"github.com/gogf/gf/frame/g"
	"github.com/hibiken/asynq"
	"pixabay_spider/pixabay"
	"pixabay_spider/utils"
)

func AddPixAbayListTask(url string) error {
	return AddTaskToQueue(PIXABAY_TASK_TYPE_LIST, g.Map{"list_url": url}, 0)
}

func ProcessPixAbay(url string) {
	err := AddPixAbayListTask(url)
	if err != nil {
		fmt.Println("AddPixAbayListTask err : ", err)
	}
}

func ProcessPixAbayList(c context.Context, t *asynq.Task) error {
	url, _ := t.Payload.GetString("list_url")

	list, err := pixabay.GetList(url)
	if err != nil {
		fmt.Println("pixabay.GetList err : ", err)
	}
	for _, element := range list {
		errPush := AddPixAbayDetailTask(element)
		if errPush != nil {
			utils.RedisSetItemStatus(element, utils.URL_STATUS_FAIL)
			fmt.Println("pixabay.GetList err : ", err)
		}
	}
	return nil
}

func AddPixAbayDetailTask(url string) error {
	return AddTaskToQueue(PIXABAY_TASK_TYPE_ARTICLE, g.Map{"article_url": url}, 0)
}

func PixAbayProcessArticleItem(c context.Context, t *asynq.Task) error {
	url, _ := t.Payload.GetString("article_url")
	err := pixabay.GetDetail(url)
	if err != nil {
		fmt.Println("GetDetail err : ", err)
		return err
	} else {
		AddPixAbayDownloadTask(url)
	}
	return nil
}

func AddPixAbayDownloadTask(url string) error {
	return AddTaskToQueue(PIXABAY_TASK_TYPE_DOWNLOAD, g.Map{"article_url": url}, 0)
}

func PixAbayProcessDownloadItem(c context.Context, t *asynq.Task) error {
	url, _ := t.Payload.GetString("article_url")
	err := pixabay.DownloadVideos(url)
	if err != nil {
		fmt.Println("DownloadVideos err : ", err)
		return err
	}
	return nil
}

func RepairProcess() error {
	result, err := pixabay.RepairResult()
	if err != nil {
		return err
	}
	if len(result) == 0 {
		return errors.New("没有需要修复的任务")
	}
	//for _, v := range result {
	//	err := AddPixAbayDetailTask(v)
	//	if err != nil {
	//		utils.RedisSetItemStatus(v, utils.URL_STATUS_FAIL)
	//	} else {
	//		fmt.Println("PIXABAY详情[处理详情完成,开始下载资源文件]: " + " url :" + v)
	//		err = AddPixAbayDownloadTask(v)
	//		if err != nil {
	//			fmt.Println("PIXABAY详情[处理详情完成,下载资源文件出错]: "+" url :"+v, err)
	//			return err
	//		} else {
	//
	//		}
	//	}
	//
	//}

	return nil
}
